package com.sumansoul.aesdemo;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.util.MonthDisplayHelper;

import com.sumansoul.aesdemo.utils.AESEncryptUtils;
import com.sumansoul.aesdemo.utils.AESUtil;
import com.sumansoul.aesdemo.utils.MD5Utils;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //BASE64使用
        initBASE64();
        //AES使用
        initAES();
        //MD5使用
        initMD5();

        //最简单的AES使用（第二种使用方式）
        initAES2();


    }

    /**
     * 最简单的AES使用（第二种使用方式）
     */
    private void initAES2() {
        try {
            String value = "123456789";
            Log.d("LUO","initAES2原数据============"+value);
            String encrypt = AESUtil.encrypt(value);
            Log.d("LUO","initAES2加密数据============"+encrypt);
            String decrypt = AESUtil.decrypt(encrypt);
            Log.d("LUO","initAES2解密数据============"+decrypt);

//            LUO: initAES2原数据============123456789
//            LUO: initAES2加密数据============OpuRX5DJc8lewuB7qQkpzw==
//            LUO: initAES2解密数据============123456789
        } catch (Exception e) {
            e.printStackTrace();
        }


    }


    /**
     * BASE64使用
     */
    private void initBASE64() {
        String value = "1992090876";
        Log.d("LUO","BASE64原数据============"+value);
        String encryptionBASE64 = Base64Utils.getEncryptionBASE64(value);
        Log.d("LUO","BASE64加密数据============"+encryptionBASE64);

        String decryptFromBASE64 = Base64Utils.getDecryptFromBASE64(encryptionBASE64);
        Log.d("LUO","BASE64解密数据============"+decryptFromBASE64);

//        LUO: BASE64原数据============1992090876
//        LUO: BASE64加密数据============MTk5MjA5MDg3Ng==
//        LUO: BASE64解密数据============1992090876
    }

    /**
     * AES使用
     */
    private void initAES() {

        String aes = "123456789";
        //将AES秘钥改成规定的16位即可。
        String key = "0123456789123456";
        try {
            Log.d("LUO","AES原数据============"+aes);
            //加密
           String  encryption=  AESEncryptUtils.encryptAES(aes,key);
            Log.d("LUO","AES加密后============"+encryption);
           //解密
           String decrypt = AESEncryptUtils.decryptAES(encryption,key);
            Log.d("LUO","AES解密后============"+decrypt);

//           LUO: AES原数据============123456789
//           LUO: AES加密后============jvTvlQaeDHK77gai7Eb2Gg==
//           LUO: AES解密后============123456789


        } catch (Exception e) {
            e.printStackTrace();
        }

    }


    /**
     * MD5使用
     * MD5是不可逆，这里的加密解密，你可以看到是对MD5算法先加密后解密，而不是对MD5的解密
     */
    private void initMD5() {
        String value = "123456";
        Log.d("LUO","MD5原数据============"+value);
        //加密的MD5
        String md5Encode = MD5Utils.MD5Encode(value);
        Log.d("LUO","MD5加密后数据============"+md5Encode);

        //对解密的MD5，再加密
        String md5Encode_kl = MD5Utils.KL(MD5Utils.MD5Encode(value));
        Log.d("LUO","MD5_kl加密后数据============"+md5Encode_kl);
        //对解密的MD5，解加密
        String decrypt = MD5Utils.MD5Decrypt(md5Encode_kl);
        Log.d("LUO","MD5_kl解密后数据============"+decrypt);

//        LUO: MD5原数据============123456
//        LUO: MD5加密后数据============e10adc3949ba59abbe56e057f20f883e
//        LUO: MD5_kl加密后数据============EDGM@MAMABDACFDLLG
//        LUO: MD5_kl解密后数据============e10adc3949ba59abbe56e057f20f883e
    }
}
